﻿if exists (select name from sysobjects where name ='spu_datmuasanpham')
	drop proc spu_datmuasanpham
go

create proc spu_datmuasanpham(@IDNguoiDung int, @IDSanPham int, @SoLuong int, @DonGia decimal, @TongGia decimal, @IDTrangThaiSanPham int, @IDDaiLyNhanSanPham int, @DiemThuong int, @TongDiemThuong int)
as
	begin tran
	
	declare @SoLuongSanPham int
	select @SoLuongSanPham=SoLuong from SanPham where ID=@IDSanPham and ThoiGianBatDauBan<=GETDATE() and ThoiGianKetThucBan>=GETDATE()
	if(@SoLuongSanPham is null)
	begin
		raiserror(N'Không thể đặt mua vì sản phẩm đã hết thời hạn bán',16,1)
		rollback tran
		return
	end
	if(@SoLuongSanPham<@SoLuong)
	begin
		raiserror(N'Không thể đặt mua số lượng vượt quá số lượng còn lại của sản phẩm',16,1)
		rollback tran
		return
	end
	update SanPham set SoLuong=SoLuong-@SoLuong where ID=@IDSanPham
	insert into NguoiDung_SanPham(IDNguoiDung,IDSanPham,SoLuong,DonGia,TongGia,NgayMua,IDTrangThaiSanPham,IDDaiLyNhanSanPham,IsPhanThuong,DiemThuong,TongDiemThuong) values(@IDNguoiDung,@IDSanPham,@SoLuong,@DonGia,@TongGia,GETDATE(),@IDTrangThaiSanPham,@IDDaiLyNhanSanPham,0,@DiemThuong,@TongDiemThuong)
	if(@@ERROR<>0)
	begin
		raiserror(N'Đã có lỗi trong quá trình đặt mua sản phẩm',16,1)
		rollback tran
		return
	end
	commit tran
go